package common.util;

import common.model.Entity.Administrator;
import common.model.Entity.Student;
import common.model.Entity.Teacher;
import common.model.Entity.User;

/**
 * 用户工厂类
 * 根据用户的角色(role)将通用User对象转换为具体的子类对象
 * role对应规则：
 * 0 -> Administrator
 * 1 -> Student
 * 2 -> Teacher
 * 其他 -> 保持为User
 */
public class UserFactory {

    /**
     * 将通用的User对象切换为具体角色的子类对象
     * @param us 通用User对象
     * @return 对应角色的具体User子类对象
     */
    public User switchToSpecificUser(User us) {
        User ret;
        Integer role = us.getRole();
        switch (role) {
            case 0 -> { // 管理员
                ret = new Administrator(us);
            }
            case 1 -> { // 学生
                ret = new Student(us);
            }
            case 2 -> { // 教师
                ret = new Teacher(us);
            }
            default -> { // 其他角色不变
                ret = us;
            }
        }
        return ret;
    }
}
